﻿#define _CRT_SECURE_NO_WARNINGS 1

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    int NumberOf1(int n)
    {
        int count = 0;
        for (int i = 0; i < 32; ++i)
        {
            int flag = (n >> i) & 1;
            if (flag)
            {
                count += 1;
            }
        }
        return count;
    }
};

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    int NumberOf1(int n)
    {
        int count = 0;
        while (n)
        {
            n &= (n - 1);
            ++count;
        }
        return count;
    }
};

/*
  1001
~ 1000

  1000
~ 0111

  0000
*/

/*
描述
输入一个整数 n ，输出该数32位二进制表示中1的个数。其中负数用补码表示。

数据范围：−2^31 <= n <= 2^31-1，即范围为:−2147483648 <= n <= 2147483647

示例1
输入：
10

返回值：
2

说明：
十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010，其中有两个1。*/

